<?xml version="1.0" encoding="UTF-8"?>

<!--#################################################################################

  Gruppiere die Tracks zu Alben und Compilations

  Warum XSLT: Es handelt sich hierbei um die Transformation einer einzelnen Datei,
  dafuer ist XSLT besser geeignet.

  ##################################################################################-->

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:uuid="java:java.util.UUID" version="2.0">

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="Mediathek">
    <xsl:element name="Mediathek">
      <xsl:copy-of select="MetaData"/>
      <xsl:copy-of select="TrackArea"/>

      <xsl:element name="Compilations">
        <xsl:for-each-group select="TrackArea/Track[exists(Compilation) and Compilation='true']" group-by="Album">
          <xsl:element name="Compilation">
            <xsl:element name="CompilationName"><xsl:value-of select="current-grouping-key()"/></xsl:element>
            <xsl:element name="CompilationUUID"><xsl:value-of select="uuid:randomUUID()"/></xsl:element>
            <xsl:element name="CompilationItems">
              <xsl:for-each  select="current-group()">
                <xsl:element name="TrackIDRef"><xsl:value-of select="./TrackID"></xsl:value-of></xsl:element>
              </xsl:for-each>
            </xsl:element>
          </xsl:element>
        </xsl:for-each-group>
      </xsl:element>

      <xsl:element name="Albums">
        <xsl:for-each-group select="TrackArea/Track[not(exists(Compilation)) or Compilation='false']" group-by="Album">
          <xsl:element name="Album">
            <xsl:element name="AlbumName"><xsl:value-of select="current-grouping-key()"/></xsl:element>
            <xsl:element name="AlbumUUID"><xsl:value-of select="uuid:randomUUID()"/></xsl:element>
            <xsl:element name="AlbumItems">
              <xsl:for-each  select="current-group()">
                <xsl:element name="TrackIDRef"><xsl:value-of select="./TrackID"></xsl:value-of></xsl:element>
              </xsl:for-each>
            </xsl:element>
          </xsl:element>
        </xsl:for-each-group>
      </xsl:element>

      <xsl:copy-of select="Playlists"/>
    </xsl:element>
  </xsl:template>

</xsl:transform>

